Avastage veebianimatsioonide API võimsust, võrreldes programmipõhist animatsioonijuhtimist ajaskaala haldamisega keerukate ja sujuvate veebianimatsioonide loomiseks.
Veebianimatsioonide API: Programmiline juhtimine vs. ajaskaala haldamine
Tänapäeva veebiarenduse maailmas on dünaamilised ja kaasahaaravad kasutajakogemused esmatähtsad. Animatsioonidel on selles oluline roll, suunates kasutaja interaktsiooni, pakkudes visuaalset tagasisidet ning parandades veebisaidi või rakenduse üldist esteetilist ilmet. Arendajatele, kes otsivad peent kontrolli ja optimaalset jõudlust, on veebianimatsioonide API (WAAPI) võimas, ehkki vahel nüansirikas tööriist. See põhjalik juhend süveneb WAAPI põhikontseptsioonidesse, keskendudes eriti programmipõhise animatsioonijuhtimise ja ajaskaala haldamise vahelisele eristusele ja koostoimele.
Veebianimatsioonide API (WAAPI) mõistmine
Veebianimatsioonide API on standardiseeritud JavaScripti API, mis pakub ühtset viisi DOM-elementide animeerimiseks. See ületab lõhe CSS-i animatsioonide/üleminekute ja JavaScripti-põhiste animatsioonide vahel, pakkudes deklaratiivset ja suure jõudlusega lähenemist. WAAPI võimaldab arendajatel luua, esitada, peatada, kerida ja manipuleerida animatsioone otse JavaScripti kaudu, andes neile enneolematu kontrolli animatsiooni elutsükli üle.
Oma olemuselt töötab WAAPI kahe põhimõiste alusel:
- Võtmekaadrid (Keyframes): Need määratlevad elemendi olekud animatsiooni kindlates punktides. Neid saab esitada objektidena, mis sisaldavad CSS-i omadusi ja nende vastavaid väärtusi.
- Animatsiooniefektid (Animation Effects): Need kirjeldavad, kuidas võtmekaadreid elemendile aja jooksul rakendatakse, sealhulgas ajastusfunktsioone, kestusi, viivitusi ja korduste arvu.
Neid komponente orkestreerib animatsioonimängija (Animation Player), mis toimib animatsiooni instantsi keskse kontrollerina.
Programmipõhine animatsioonijuhtimine: otsene manipuleerimine ja reaalajas reageerimisvõime
Programmipõhine animatsioonijuhtimine viitab animatsiooni omaduste ja olekute otsesele manipuleerimisele JavaScripti koodi abil. See lähenemine rõhutab imperatiivset animatsiooniarenduse stiili, kus arendajad dikteerivad selgesõnaliselt iga animatsiooni käitumise aspekti API-kõnede kaudu. See on eriti kasulik animatsioonide puhul, mis on:
- Sündmuspõhised: Käivitatakse kasutaja interaktsioonidest, nagu klõpsud, kerimised või hiirega üleliikumised.
- Andmetega seotud: Sõltuvad dünaamilistest andmetest või rakenduse olekust.
- Keerulised järjestused: Hõlmavad mitme elemendi keerukat koreograafiat.
Programmipõhise juhtimise põhijooned:
WAAPI programmipõhine juhtimine võimaldab:
- Dünaamilised omaduste muudatused: Saate lennult muuta animatsiooni omadusi, nagu kestus, viivitus, leevendusfunktsioon ja korduste arv, kohandudes kasutaja sisendi või rakenduse oleku muutustega.
- Täpne kerimine: Hüpake koheselt animatsioonijärjestuse mis tahes punkti. See on hindamatu interaktiivsete kogemuste puhul, kus kasutajad võivad vajada animatsiooni läbikerimist või selle taaskäivitamist konkreetsest kaadrist.
- Tingimuslik esitus: Käivitage, peatage, seisake ja pöörake animatsioone vastupidi vastavalt JavaScriptis määratletud loogikale.
- Animatsioonide kombineerimine: Aheldage või asetage mitu animatsiooni üksteise peale, et luua keerukaid visuaalseid efekte.
- Kasutaja sisendile reageerimine: Siduge animatsiooni esitus otse kasutaja tegevustega, näiteks elemendi lohistamisega, mis käivitab vastava animatsioonilõigu.
Programmipõhise juhtimise praktilised näited:
Kujutage ette e-poe tootelehte. Kui kasutaja klõpsab nupul "Lisa ostukorvi", võiksite animeerida toote pildi lendamist ostukorvi ikoonile. See nõuab täpset kontrolli:
const productImage = document.getElementById('product-image');
const cartIcon = document.getElementById('cart-icon');
productImage.addEventListener('click', () => {
const animation = productImage.animate([
{ transform: 'translate(0, 0)' },
{ transform: 'translate(X_DISTANCE, Y_DISTANCE)' } // Arvuta X/Y ostukorvi asukoha põhjal
], {
duration: 500, // millisekundit
easing: 'ease-out',
fill: 'forwards'
});
animation.onfinish = () => {
// Soovi korral värskendage ostukorvi kogust või kuvage kinnitus
console.log('Animation finished!');
};
});
Selles näites käivitatakse animatsioon otse kasutaja sündmusest ning selle omadused (kestus, leevendus) on määratletud programmiliselt. onfinish tagasikutse pakub konksu edasise loogika käivitamiseks, kui animatsioon on lõpule jõudnud.
Teine levinud kasutusjuhtum on lohista-ja-kukuta liides. Kui kasutaja lohistab elementi, saab selle asukohta reaalajas värskendada ning käivitada või muuta vastavat animatsiooni:
let isDragging = false;
let initialX, initialY;
let xOffset = 0, yOffset = 0;
document.getElementById('draggable-element').addEventListener('mousedown', (e) => {
initialX = e.clientX - xOffset;
initialY = e.clientY - yOffset;
isDragging = true;
// Alusta 'lohistamise' animatsiooni või üleminekut
// WAAPI puhul võib see hõlmata animatsioonimängija loomist ja selle currentTime värskendamist
});
document.addEventListener('mousemove', (e) => {
if (!isDragging) return;
xOffset = e.clientX - initialX;
yOffset = e.clientY - initialY;
// Värskendage elemendi asukohta otse või manipuleerige animatsioonimängijat
// WAAPI puhul võiksite hankida animatsioonimängija ja seda kerida:
// const player = element.getAnimation();
// if (player) {
// const animationDuration = player.effect.getTiming().duration;
// const progress = Math.min(1, Math.max(0, xOffset / MAX_DRAG_DISTANCE)); // Näitearvutus
// player.currentTime = progress * animationDuration;
// }
});
document.addEventListener('mouseup', () => {
isDragging = false;
// Soovi korral esitage 'kukutamise' animatsioon või lähtestage olek
});
Kuigi see näide on lihtsustatud ja võib lohistamiseks kasutada otsest stiilimanipulatsiooni, illustreerib see pidevale kasutaja sisendile reageerimise kontseptsiooni animatsiooni oleku mõjutamiseks. WAAPI võimaldaks teil selle abstraheerida animatsioonimängijateks, mida saab täpselt juhtida currentTime abil.
Programmipõhise juhtimise eelised:
- Paindlikkus: Kohandage animatsioone mis tahes dĂĽnaamilise stsenaariumiga.
- Täpsus: Saavutage täpne kontroll animatsiooni esituse ja oleku üle.
- Interaktiivsus: Looge väga interaktiivseid ja reageerimisvõimelisi kasutajaliideseid.
- Jõudlus: Õigesti kasutamisel kasutab WAAPI brauseri animatsioonimootorit, kandes sageli töö põhisest JavaScripti lõimest eemale, mis viib sujuvamate animatsioonideni.
Programmipõhise juhtimise väljakutsed:
- Keerukus: Võib muutuda paljusõnaliseks lihtsate, deklaratiivsete animatsioonide puhul.
- Silumine: Keeruliste animatsiooniolekute ja -järjestuste jälgimine võib olla keeruline.
- Standardkood (Boilerplate): Paljude elementide jaoks individuaalsete animatsioonimängijate seadistamine ja haldamine võib nõuda märkimisväärsel hulgal koodi.
Ajaskaala haldamine: keeruliste järjestuste orkestreerimine ja globaalne kontroll
Ajaskaala haldamine WAAPI kontekstis viitab võimele grupeerida, järjestada ja sünkroniseerida mitu animatsiooni ühise ajaskaala all. See lähenemine on ideaalne keeruliste järjestuste, narratiivipõhiste kogemuste jaoks või kui teil on vaja orkestreerida mitme elemendi käitumist samaaegselt või järjestikku.
WAAPI-l ei ole sisseehitatud spetsiaalset 'Timeline' objekti nagu mõnel animatsiooniteegil. Selle asemel saavutatakse ajaskaala haldamine strateegilise kasutusega:
Animation.currentTimejaAnimation.duration: Kontrollides individuaalsete animatsioonidecurrentTime'i suhtes kontseptuaalse globaalse ajaskaalaga, saate neid sünkroniseerida.Animation.finishedPromise: See lubadus (promise) laheneb, kui animatsioon lõpeb, võimaldades teil animatsioone aheldada või käivitada järgnevaid animatsioone.GroupEffectjaSequenceEffect(otseselt vähem levinud): Kuigi need ei ole üldiseks ajaskaala orkestreerimiseks nii otse eksponeeritud kui spetsiaalsetes teekides, võib WAAPI animatsioonide alusstruktuuri vaadelda kui efektide komponeerimist. Lihtsamate järjestuste jaoks onfinishedlubaduste aheldamine idiomaatilisem.- Välised teegid: Tõeliselt keeruka ajaskaala haldamiseks kasutavad arendajad sageli WAAPI-le tuginevaid teeke, mis pakuvad abstraktsemat ja kõrgema taseme liidest.
Ajaskaala haldamise põhijooned:
- Sünkroniseerimine: Käivitage mitu animatsiooni täpselt samal ajal või täpsete nihetega.
- Järjestamine: Esitage animatsioone üksteise järel kindlaksmääratud järjekorras.
- Keeruline koreograafia: Koordineerige arvukate elementide liikumisi ja olekuid sidusa animatsiooni saamiseks.
- Globaalne kontroll: Peatage, kerige või taaskäivitage terve animatsioonide grupp ühe käsuga.
Ajaskaala haldamise praktilised näited:
Kujutage ette toote tutvustusringkäiku (onboarding tour). Peate järjestikku esile tõstma erinevaid funktsioone, kus iga esiletõst hajub sisse, kuvab teavet ja seejärel hajub välja enne järgmise ilmumist. See on ideaalne kandidaat ajaskaala haldamiseks:
// Eeldame, et elemendid on juba valitud ja animatsioonid määratletud
const highlight1 = element1.animate(keyframes1, options1);
const info1 = element2.animate(keyframes2, options2);
const highlight2 = element3.animate(keyframes3, options3);
const info2 = element4.animate(keyframes4, options4);
// Funktsioon ringkäigu järjestikuseks käivitamiseks
async function runOnboardingTour() {
// Esimene esiletõst ja infopaneel
await Promise.all([highlight1.finished, info1.finished]); // Oodake, kuni mõlemad lõpetavad
// Lisage väike viivitus enne järgmist sammu
await new Promise(resolve => setTimeout(resolve, 300));
// Teine esiletõst ja infopaneel
await Promise.all([highlight2.finished, info2.finished]);
console.log('Onboarding tour complete!');
}
// Ringkäigu alustamiseks:
runOnboardingTour();
// Kogu ringkäigu peatamiseks:
// Peate haldama individuaalseid mängijaid. Tugevama lahenduse jaoks kaaluge teegi kasutamist.
See näide kasutab animatsioonide aheldamiseks .finished lubadust. await võtmesõna peatab `runOnboardingTour` funktsiooni täitmise, kuni animatsioonid, mida see ootab, on lõpule viidud. See loob tõhusalt järjestuse.
Täpsema ajaskaala kontrolli jaoks, nagu näiteks kogu järjestuse läbikerimine või paljude elementide täpne sünkroniseerimine, võiksite seda veelgi abstraheerida:
class AnimationTimeline {
constructor() {
this.animations = [];
this.currentTime = 0;
this.duration = 0;
this.isPlaying = false;
}
addAnimation(animation, delay = 0, syncWith = null) {
this.animations.push({ animation, delay, syncWith });
// Värskenda kogukestust
this.duration = Math.max(this.duration, delay + (animation.effect.getTiming().duration || 0));
}
play() {
this.isPlaying = true;
this.step(performance.now());
}
step(timestamp) {
if (!this.isPlaying) return;
// Lihtne ajapõhine värskendus (nõuab keerukamat animatsioonikaadri käsitlemist)
// Reaalse implementatsiooni jaoks kasutaksite requestAnimationFrame'i ja jälgiksite möödunud aega
this.animations.forEach(({ animation, delay, syncWith }) => {
const targetTime = delay + (syncWith ? syncWith.animation.currentTime : 0);
if (this.currentTime >= targetTime) {
// Arvuta edenemine ja määra currentTime
const elapsed = this.currentTime - targetTime;
const timing = animation.effect.getTiming();
if (elapsed < timing.duration) {
animation.currentTime = elapsed;
}
}
});
this.currentTime += 16; // Simuleeri aja möödumist (nt 60 kaadrit sekundis)
if (this.currentTime < this.duration) {
requestAnimationFrame(this.step.bind(this));
} else {
this.isPlaying = false;
console.log('Timeline finished');
}
}
// ... muud meetodid nagu paus, kerimine, seiskamine
}
// Kasutamine:
// const timeline = new AnimationTimeline();
// const anim1 = elem1.animate(...);
// const anim2 = elem2.animate(...);
// timeline.addAnimation(anim1);
// timeline.addAnimation(anim2, 500); // anim2 algab 500ms pärast anim1 algust
// timeline.play();
See AnimationTimeline klass on kontseptuaalne näide, mis demonstreerib, kuidas võiks animatsioone orkestreerida. Tegelikud implementatsioonid hõlmavad sageli keerukamaid ajastusarvutusi ja sünkroniseerimismehhanisme, eriti selliste funktsioonide jaoks nagu kerimine.
Ajaskaala haldamise eelised:
- Orkestreerimine: Ideaalne keeruliste, mitmeastmeliste animatsioonide jaoks.
- Sidusus: Tagab, et kõik elemendid töötavad harmooniliselt koos.
- Lihtsustatud kontroll: Hallake animatsioonide gruppi ĂĽhe ĂĽksusena.
- Narratiivne voog: Suurepärane lugude jutustamiseks või juhendatud kasutajateekondade jaoks.
Ajaskaala haldamise väljakutsed:
- Implementatsiooni keerukus: Tugeva ajaskaala süsteemi nullist ülesehitamine võib olla nõudlik.
- Liiga keeruline lihtsate juhtumite jaoks: Pole vajalik ĂĽksikute, iseseisvate animatsioonide puhul.
- Jõudlusega seotud kaalutlused: Paljude samaaegselt mängivate animatsioonide haldamine nõuab hoolikat optimeerimist.
Programmipõhine juhtimine vs. ajaskaala haldamine: kumba valida?
Valik programmipõhise juhtimise või ajaskaala haldamise eelistamise vahel sõltub täielikult teie animatsiooni konkreetsetest nõuetest:
Valige programmipõhine juhtimine, kui:
- Animatsioonid käivitatakse otse kasutaja interaktsioonidest (nt nupuvajutused, hiirega üleliikumised, kerimised).
- Peate dünaamiliselt kohandama animatsiooni parameetreid reaalajas andmete või kasutaja sisendi põhjal.
- Animatsioonid hõlmavad lihtsaid, eraldiseisvaid elemendi teisendusi või olekumuutusi.
- Vajate täpset kontrolli üksiku animatsiooni esituse üle, näiteks kerimist või kohandatud esitusloogikat ühe animatsiooni jaoks.
Valige ajaskaala haldamine, kui:
- Loote animatsioonide järjestust, mis peab mängima kindlas järjekorras.
- Mitu elementi tuleb animeerida sünkroonis või hoolikalt ajastatud nihetega.
- Arendate filmilikumat või narratiivipõhist kogemust, kus üldine voog on kriitilise tähtsusega.
- Vajate ühte kontrollpunkti seotud animatsioonide seeria esitamiseks, peatamiseks või läbikerimiseks.
Sünergia: mõlema lähenemise kombineerimine
On ülioluline mõista, et need kaks kontseptsiooni ei välista teineteist; sageli töötavad nad kõige paremini sünergias. Keeruline animatsioon võib hõlmata:
- Pea-ajaskaala, mis dikteerib peamiste animatsioonisündmuste üldise järjestuse ja sünkroniseerimise.
- Programmipõhine juhtimine ajaskaala igas etapis, et käsitleda dünaamilisi aspekte või sellele segmendile omaseid kasutaja interaktsioone.
Näiteks võib tegelase animatsioon olla osa mängu vaheklipi suuremast ajaskaalast. Ajaskaala tagab, et tegelase kõnnitsükkel on kooskõlas tausta liikumistega. Samas võib kõnnitsükli animatsiooni sees käte liikumist programmiliselt kohandada vastavalt tegelase kiirusele (dünaamiline parameeter), kasutades otsest animatsiooniomaduste manipuleerimist.
Näide: interaktiivne infograafik
Kujutage ette infograafikut, mis visualiseerib globaalseid rändemustreid. Ajaskaala võib kontrollida andmepunktide ilmumise ja hääbumise üldist animatsiooni erinevates piirkondades mitme aasta jooksul.
- Ajaskaala haldamine: Tagamaks, et 2010. aasta andmed ilmuvad enne 2015. aasta omi ja et kõik piirkonnad animeerivad oma aastased andmed sünkroonis.
- Programmipõhine juhtimine: Kui kasutaja liigub hiirega kaardil kindla piirkonna kohale, võib mängida täiendav, lokaliseeritud animatsioon, mis näitab üksikasjalikke riigipõhiseid liikumisi. Selle hiirega üleliikumise animatsiooni ajastus, leevendus või sihtomadused võidakse arvutada programmiliselt hiire asukoha ja elemendi põhjal, mille kohal hiir on.
WAAPI sisseehitatud võimekuste ärakasutamine
WAAPI pakub tugevaid mehhanisme, mis hõlbustavad nii programmipõhist juhtimist kui ka ajaskaala-laadset järjestamist:
Animation.play(),.pause(),.cancel(),.reverse(): Otsene programmipõhine kontroll esituse üle.Animation.currentTime: Võimaldab täpset kerimist ja animatsiooni edenemise manipuleerimist.Animation.effect.getTiming(): Juurdepääs animatsiooni ajastusomadustele ja nende muutmine.Animation.finished: Lubadus, mis laheneb animatsiooni lõppedes, võimaldades järjestikust täitmistawaitkaudu.document.getAnimations(): Võimas meetod kõigi dokumendis praegu töötavate animatsioonide hankimiseks, mis võib olla hindamatu globaalse kontrolli või inspektsiooni jaoks.
Näide: document.getAnimations() kasutamine globaalseks kontrolliks
Kujutage ette modaalakent, mis animeeritakse nähtavale. Kui kasutaja klõpsab väljaspool modaalakent või vajutab Escape-klahvi, soovite selle sulgeda ja kõik muud lehel olevad animatsioonid peaksid potentsiaalselt peatuma või lähtestuma.
const modal = document.getElementById('my-modal');
const closeModalButton = document.getElementById('close-modal');
function openModal() {
modal.style.display = 'block';
const modalAnimation = modal.animate([
{ opacity: 0 },
{ opacity: 1 }
], {
duration: 400,
easing: 'ease-in-out',
fill: 'forwards'
});
// Peata teised animatsioonid, kui modaalaken avaneb (valikuline)
document.getAnimations().forEach(anim => {
if (anim !== modalAnimation) {
anim.pause();
}
});
}
function closeModal() {
const modalAnimation = modal.animate([
{ opacity: 1 },
{ opacity: 0 }
], {
duration: 400,
easing: 'ease-in-out',
fill: 'forwards'
});
modalAnimation.onfinish = () => {
modal.style.display = 'none';
// Jätka teiste animatsioonidega, kui modaalaken sulgub
document.getAnimations().forEach(anim => {
if (anim !== modalAnimation) {
anim.play();
}
});
};
}
openModalButton.addEventListener('click', openModal);
closeModalButton.addEventListener('click', closeModal);
window.addEventListener('keydown', (e) => {
if (e.key === 'Escape' && modal.style.display === 'block') {
closeModal();
}
});
See näide demonstreerib, kuidas document.getAnimations() saab kasutada kõigi töötavate animatsioonide esituse programmiliselt juhtimiseks, luues tõhusalt globaalse ajaskaala kontrolli vormi nende peatamise ja jätkamise kaudu.
Jõudlusega seotud kaalutlused
Nii programmipõhine juhtimine kui ka ajaskaala haldamine WAAPI-s saavad kasu API disainist, mis on suunatud jõudlusele. WAAPI animatsioonid käivitatakse tavaliselt brauseri komposiitorlõimel, mis tähendab, et need saavad töötada sõltumatult peamisest JavaScripti lõimest. See viib sujuvamate animatsioonideni, eriti keeruliste DOM-i manipulatsioonide või raskete JavaScripti arvutuste ajal.
- Töö üleandmine: WAAPI animatsioone, eriti neid, mis animeerivad omadusi nagu
transformjaopacity, saab komponeerida GPU abil, mille tulemuseks on riistvaraliselt kiirendatud animatsioonid. - Vähendatud paigutuse rabelemine (Layout Thrashing): Stiilide otsene manipuleerimine tsüklis võib põhjustada paigutuse rabelemist. WAAPI, abstraheerides animatsiooniprotsessi, aitab seda vältida.
- Tõhusus: Brauser suudab WAAPI animatsioone optimeerida tõhusamalt kui paljusid traditsioonilisi JavaScriptil põhinevaid animatsioonitehnikaid.
Siiski, isegi WAAPI-ga, võivad halvasti implementeeritud keerulised animatsioonid jõudlust mõjutada. Alati on hea tava:
- Animeerida ainult omadusi, mida saab riistvaraliselt kiirendada (
transform,opacity). - Hoida samaaegselt animeerivate elementide arvu mõistlikes piirides.
- Kasutada sobivaid leevendusfunktsioone ja kestusi.
- Testida animatsioone erinevates seadmetes ja brauserites.
Millal kasutada WAAPI-le ehitatud teeke
Kuigi WAAPI on võimas, kasutavad arendajad sageli sellele tuginevaid teeke veelgi suurema abstraktsiooni ja mugavuse saavutamiseks, eriti keeruka ajaskaala haldamise või keeruliste järjestuste jaoks:
- GSAP (GreenSock Animation Platform): De facto standard professionaalses veebianimatsioonis. GSAP kasutab paljude oma funktsioonide jaoks laialdaselt WAAPI-t kapoti all, pakkudes kõrgelt optimeeritud ja funktsioonirikast API-d keeruliste ajaskaalade, järjestamise ja brauseriteülese ühilduvuse jaoks.
- Framer Motion: Populaarne Reacti animatsiooniteek, mis kasutab WAAPI-t sujuvate animatsioonide jaoks, pakkudes deklaratiivset ja komponendipõhist lähenemist.
- Popmotion: Madalama taseme animatsioonimootor, mida saab kasutada kohandatud animatsioonisüsteemide loomiseks või WAAPI-ga integreerimiseks.
Need teegid pakuvad sageli:
- Intuitiivsemaid ajaskaala loomise ja manipuleerimise tööriistu.
- Täiustatud järjestamise ja sünkroniseerimise funktsioone.
- BrauseriteĂĽlese ĂĽhilduvuse kihte.
- Lihtsam integratsioon kasutajaliidese raamistikega.
Kui teie projekt hõlmab väga keerulisi animatsioone, tegelaste rigimist või ulatuslikke narratiivseid järjestusi, kaaluge tuntud animatsiooniteegi kasutamise eeliseid, mis rakendab WAAPI võimsust.
Kokkuvõte
Veebianimatsioonide API pakub tugeva aluse keerukate ja sujuvate animatsioonide loomiseks otse brauseris. Selle täieliku potentsiaali ärakasutamiseks on oluline mõista programmipõhise animatsioonijuhtimise ja ajaskaala haldamise vahelist erinevust.
Programmipõhine juhtimine annab teile peeneteralise, reaalajas manipuleerimise võimaluse üksikute animatsioonide üle, mis on ideaalne interaktiivsete ja andmepõhiste kogemuste jaoks. Ajaskaala haldamine, mis saavutatakse animatsioonide strateegilise järjestamise ja sünkroniseerimise kaudu, võimaldab orkestreerida keerulisi, mitmeastmelisi visuaalseid narratiive.
Praktikas täiendavad need lähenemised sageli teineteist. Mõlemat meisterdades ja mõistes, millal kasutada spetsiaalseid teeke, saavad veebiarendajad luua tõeliselt köitvaid ja dünaamilisi kasutajaliideseid, mis paistavad silma globaalsel digimaastikul.
Kuna veebianimatsioon areneb jätkuvalt, jääb WAAPI nurgakivitehnoloogiaks, pakkudes arendajatele tööriistu visuaalse jutustamise ja kasutajate kaasamise piiride nihutamiseks veebis.